#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"analyse_cap_manq.h"

#include"gestion_capteurs.h"
#include"Personnel.h"
#define taille 100

int nbre_lignes()
{char tps[20],cap[20];
 char chemin[500];
 long id;
 int j,i,nb_lignes;
FILE *f;
f=fopen("/home/yosr/events.txt","r");
if(f==NULL){
           printf("\n Impossible d'ouvrir le fichier %s","events.txt");
           }
else{  nb_lignes=0;
 while(fscanf(f,"%s%ld%s",tps,&id,cap)!= EOF)   
      {
       nb_lignes++;

      }
fclose(f);
return nb_lignes;
    }
}

int remplissage_tab_pers(une_personne t[],Alerte tab_alertes[],char chemin_ref[])
{
  // chemin_ref[]="E01 C01 S01 L01 C02 I01 L02 V01 D01 ";
    
int nb_pers=0;
FILE *f;
f=fopen("/home/yosr/events.txt","r");
int i,j,k,nb_lignes=nbre_lignes();
char tps[20],cap[20],chemin_cap[500];
long id;

//initialiser le tableau
if(f!=NULL)
{
for(j=0;j<nb_lignes;j++)
 {t[j].id=-1;
 tab_alertes[j].id=-1;
 strcpy(tab_alertes[j].alerte3," ");
 strcpy(t[j].chemin_cap," ");
 t[j].indice=0;
 }

// remplissage tab

while(fscanf(f,"%s%ld%s",tps,&id,cap)!= EOF)
{ 
 strcat(cap," "); 
 i=0;
 int trouve=0;
 while((trouve==0)&&(i<nb_lignes))
 {    
   if(t[i].id==id)
   {  
      if(strcmp(cap,"Ebola ")==0)
      { 
        strcat(tab_alertes[i].alerte3,cap);
        
        strcat(t[i].chemin_cap,cap);      
        trouve=1;
      }
      else if( (strcmp(cap,"B01 ")==0)||(strcmp(cap,"M01 ")==0)||(strcmp(cap,"Sout ")==0)||(strcmp(cap,"Pout ")==0) )
       {strcat(t[i].chemin_cap,cap);      
        trouve=1;//pour revenir au fichier 
       }
      else
      {
        strcat(t[i].chemin_cap,cap);
        
        int k,j; char ch[5];
    
        for(j=0,k=t[i].indice;k<t[i].indice+4;j++,k++)
           {
            ch[j]=chemin_ref[k];
           }
        ch[4]='\0';

        if(strcmp(ch,cap)!=0)
         { char ch2[5];
           strcpy(ch2,ch);
        
           do { 
              strcat(tab_alertes[i].alerte3,ch2);
     
              t[i].indice=t[i].indice+4;
          
              int k; 
 
              for(j=0,k=t[i].indice;k<t[i].indice+4;j++,k++)
                {
                 ch2[j]=chemin_ref[k];
                }

              ch2[4]='\0';
         
               }while((strcmp(ch2,cap)!=0)&&(t[i].indice<36));
         }
      
        t[i].indice=t[i].indice+4;     
        trouve=1;
      }    
  }
   else if (t[i].id==-1)
       {
        t[i].id=id;
        tab_alertes[i].id=id; 
     
        strcat(t[i].chemin_cap,cap);
     
        t[i].indice=t[i].indice +4;     
        trouve=1;
  
        nb_pers++;
       }
   else {i++;}
 }
}

}
fclose(f);
return nb_pers;
}

void afficher_alertes(Alerte tab_alertes[],personnel p)
{int i=0;
 FILE *f;
 printf("Les membres du personnel qui risquent d'avoir l'Ebola sont:\n");
 
 while(tab_alertes[i].id!=-1)
  { if(strcmp(tab_alertes[i].alerte3," ")!=0)
      {
       printf("  ID =%ld\n",tab_alertes[i].id);
  
       f=fopen("fichier_personnel","rb");

       if (f!=NULL)
         {
          while((fread(&p,sizeof(personnel),1,f)!=0))
            {
	     if (p.ID==tab_alertes[i].id)
	       {printf(" Nom= %s \n Prenom= %s \n Poste= %s\n",p.nom,p.prenom,p.poste);
               }
            }

         printf("défaut:\n");
         puts(tab_alertes[i].alerte3);
        }
     fclose(f);
     }
   i++;
  }
}

void analyse(char ref[])
{
 personnel p; 
 int i,j,nbre_personnel,taille_fichier_events=nbre_lignes();
 Alerte tab_alertes[200];
 une_personne tab_pers[100];
 char chemin_ref[200];
 FILE*f;
 f=fopen(ref,"r");
 fgets(chemin_ref,500,f);
 
 fclose(f);

 nbre_personnel=remplissage_tab_pers(tab_pers,tab_alertes,chemin_ref);
 
 for (i=0;i<nbre_personnel;i++)
    {printf("Le parcours de la personne %d ayant l'ID =%ld\n",i,tab_pers[i].id);
     printf("%s\n",tab_pers[i].chemin_cap);       
    }
 afficher_alertes(tab_alertes,p);
}
